{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Grouped and Dummy Regression\n",
    "\n",
    "\n",
    "## Regression With Grouped Data\n",
    "\n",
    "Not all data points are created equal. If we look again at our ENEM dataset, we trust much more in the score of big schools than in the ones from small schools. This is not to say that big schools are better or anything. It is just due to the fact that their big size imply less variance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from scipy import stats\n",
    "from matplotlib import style\n",
    "import seaborn as sns\n",
    "from matplotlib import pyplot as plt\n",
    "import statsmodels.formula.api as smf\n",
    "\n",
    "style.use(\"fivethirtyeight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(876)\n",
    "enem = pd.read_csv(\"./data/enem_scores.csv\").sample(200)\n",
    "plt.figure(figsize=(8,4))\n",
    "sns.scatterplot(y=\"avg_score\", x=\"number_of_students\", data=enem)\n",
    "sns.scatterplot(y=\"avg_score\", x=\"number_of_students\", s=100, label=\"Trustworthy\",\n",
    "                data=enem.query(f\"number_of_students=={enem.number_of_students.max()}\"))\n",
    "sns.scatterplot(y=\"avg_score\", x=\"number_of_students\", s=100, label=\"Not so Much\",\n",
    "                data=enem.query(f\"avg_score=={enem.avg_score.max()}\"))\n",
    "plt.title(\"ENEM Score by Number of Students in the School\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the data above, intuitively, points to the left should have less impact in my model than points to the right. In essence, points to the right are actually lots of other data points grouped into a single one. If we could unbundle them and run a linear regression on the ungrouped data, they would indeed contribute much more to the model estimation than an unbundled point in the left. \n",
    "\n",
    "This phenomenon of having a region of low variance and another of high variance is called **heteroskedasticity**. Put it simply, heteroskedasticity is when the variance is not constant across all values of the features. In the case above, we can see that the variance decreases as the feature sample size increases. To give another example of where we have heteroskedasticity, if you plot wage by age, you will see that there is higher wage variance for the old than for the young. But, by far, the most common reason for variance to differ is grouped data.\n",
    "\n",
    "Grouped data like the one above are extremely common in data analysis. One reason for that is confidentiality. Governments and firms can't give away personal data because that would violate data privacy requirements they have to follow. If they need to export data to an outside researcher, they can only do it by means of grouping the data. This way, individuals get grouped together and are no longer uniquely identifiable.\n",
    "\n",
    "Fortunately for us, regression can handle those kinds of data pretty well. To understand how, let's first take some ungrouped data like the one we had on wage and education. It contains one line per worker, so we know the wage for each individual in this dataset and also how many years of education he or she has."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>wage</th>\n",
       "      <th>lhwage</th>\n",
       "      <th>educ</th>\n",
       "      <th>IQ</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>769</td>\n",
       "      <td>2.956212</td>\n",
       "      <td>12</td>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>825</td>\n",
       "      <td>3.026504</td>\n",
       "      <td>14</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>650</td>\n",
       "      <td>2.788093</td>\n",
       "      <td>12</td>\n",
       "      <td>96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>562</td>\n",
       "      <td>2.642622</td>\n",
       "      <td>11</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>600</td>\n",
       "      <td>2.708050</td>\n",
       "      <td>10</td>\n",
       "      <td>91</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   wage    lhwage  educ   IQ\n",
       "0   769  2.956212    12   93\n",
       "2   825  3.026504    14  108\n",
       "3   650  2.788093    12   96\n",
       "4   562  2.642622    11   74\n",
       "6   600  2.708050    10   91"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wage = pd.read_csv(\"./data/wage.csv\").dropna()[[\"wage\", \"lhwage\", \"educ\", \"IQ\"]]\n",
    "wage.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we run a regression model to figure out how education is associated with log hourly wages, we get the following result."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>    2.3071</td> <td>    0.104</td> <td>   22.089</td> <td> 0.000</td> <td>    2.102</td> <td>    2.512</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>educ</th>      <td>    0.0536</td> <td>    0.008</td> <td>    7.114</td> <td> 0.000</td> <td>    0.039</td> <td>    0.068</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_1 = smf.ols('lhwage ~ educ', data=wage).fit()\n",
    "model_1.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, let's pretend for a moment that this data was under some confidentiality constraint. The provider of it was not able to give individualised data. So we ask him instead to group everyone by years of education and give us only the mean log hourly wage and the number of individuals in each group. This leaves us with only 10 data points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>educ</th>\n",
       "      <th>lhwage</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>9</td>\n",
       "      <td>2.679533</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10</td>\n",
       "      <td>2.730512</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>11</td>\n",
       "      <td>2.878807</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>12</td>\n",
       "      <td>2.949520</td>\n",
       "      <td>270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>13</td>\n",
       "      <td>3.101693</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>14</td>\n",
       "      <td>3.007821</td>\n",
       "      <td>53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>15</td>\n",
       "      <td>3.176634</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>16</td>\n",
       "      <td>3.176659</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>17</td>\n",
       "      <td>3.259375</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>18</td>\n",
       "      <td>3.178160</td>\n",
       "      <td>46</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   educ    lhwage  count\n",
       "0     9  2.679533      4\n",
       "1    10  2.730512     21\n",
       "2    11  2.878807     25\n",
       "3    12  2.949520    270\n",
       "4    13  3.101693     56\n",
       "5    14  3.007821     53\n",
       "6    15  3.176634     32\n",
       "7    16  3.176659    121\n",
       "8    17  3.259375     35\n",
       "9    18  3.178160     46"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "group_wage = (wage\n",
    "              .assign(count=1)\n",
    "              .groupby(\"educ\")\n",
    "              .agg({\"lhwage\":\"mean\", \"count\":\"count\"})\n",
    "              .reset_index())\n",
    "\n",
    "group_wage"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fear not! Regression doesn't need big data to work! What we can do is provide weights to our linear regression model. This way, it will consider groups with higher sample size more than the small groups. Notice how I've replaced the `smf.ols` with `smf.wls`, for weighted least squares. It's hard to notice, but it will make all the difference."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>    2.3071</td> <td>    0.108</td> <td>   21.321</td> <td> 0.000</td> <td>    2.058</td> <td>    2.557</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>educ</th>      <td>    0.0536</td> <td>    0.008</td> <td>    6.867</td> <td> 0.000</td> <td>    0.036</td> <td>    0.072</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_2 = smf.wls('lhwage ~ educ', data=group_wage, weights=group_wage[\"count\"]).fit()\n",
    "model_2.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice how the parameter estimate of `educ` in the grouped model is exactly the same as the one in the ungrouped data. Also, even with only 10 data points, we've managed to get a statistically significant coefficient. That's because, although we have fewer points, grouping also lowers the variance by a lot. Also notice how the standard error is a bit larger, as is the t statistics. That's because some information about the variance is lost, so we have to be more conservative. Once we group the data, we don't know how large the variance is within each group. Compare the results above with what we would have with the non weighted model below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>    2.1739</td> <td>    0.111</td> <td>   19.497</td> <td> 0.000</td> <td>    1.917</td> <td>    2.431</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>educ</th>      <td>    0.0622</td> <td>    0.008</td> <td>    7.702</td> <td> 0.000</td> <td>    0.044</td> <td>    0.081</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_3 = smf.ols('lhwage ~ educ', data=group_wage).fit()\n",
    "model_3.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The parameter estimate is larger. What is happening here is that the regression is placing equal weight for all points. If we plot the model along the grouped points, we see that the non weighted model is giving more importance to  small points in the lower right than it should. As a consequence, the line has a higher slope."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaoAAAEGCAYAAAA0UdFjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd5hU5fXA8e+ZurOFXZr0Liqo2BCwYo8liSWakKhRgzFijT2K3SBqsJdobGDvxu5PDSpBBSwBUUEXlN7LLmyben5/zIC7y+7MXZiZnd09n+fZh517z9x75gJ79t577vuKqmKMMcbkKldzJ2CMMcYkY4XKGGNMTrNCZYwxJqdZoTLGGJPTrFAZY4zJaZ7mTqApysvLrUXRGGNaueLiYqn92s6ojDHG5DQrVMYYY3KaFaocUlpa2twptCh2vJrGjlfT2PFyLtPHygqVMcaYnJaVQiUieSIyQ0Rmici3InJDAzFni8hsEZkpIlNFZHA2cjPGGJPbstX1FwQOUdUKEfECU0XkHVWdVivmGVV9EEBEfg3cARzpZOOqSkVFBbFYLO2JZ1NeXh7l5eXNnUZGuFwuCgsLEZHUwcYYU0tWCpXGR76tSLz0Jr60XsyGWi8L6q9PpqKiAr/fj8/n29ZUm5Xf7ycvL6+508iIUChERUUFRUVFzZ2KMaaFydo9KhFxi8hMYBXwvqpObyDmXBGZD9wGXOB027FYrMUXqdbO5/O1+DNeY8yWNBrEE1qGxqIZ24dke5oPESkBXgXOV9VvGon5A/ALVT2t9vLaD/zW7jLJy8ujc+fOmUnYpM3q1aupqalp7jSMMWngipbTZdm1CPFfQMOerqzpcinq8m/V9gYOHLj5+/oP/Ga9UAGIyHVApapOaGS9C1ivqsW1lzc2MkV5eTnFxcUNrcqKK6+8kl69enHOOecAcMIJJ9CjRw/uvfdeAMaOHUu3bt0477zztnjvuHHj2G+//TjooIOoqalp8NLf+PHjKSws5Pzzz6+zvKysjJdeeokzzzyzSfk2tr1MS/ffU2lpaZ1/3CY5O15NY8erYRqppHrGOWjNyi3W+Qdfhqfrodu8j2YZmUJEOifOpBCRAHAYMLdeTO1/EccALeYhhuHDhzNjxgwgfhly7dq1zJ3788ebMWMGI0aMaPC9Y8eO5aCDDtqq/ZaXl/Poo49u1XuNMaYpNBai+stLqJrymwaLFIAEumdk39nq+usGTBIRN/Hi+IKqvikiNwJfqOrrwHkichgQBtYDpzW+ueQKTzsoDSn/rGLSR0nXDx8+nKuuugqAOXPmMGjQIFauXElZWRmBQIDvv/8egKOPPprKyko6duzIAw88QNeuXRkzZgxHHnkkxx57LB988AE33HADHTt2ZMiQISxcuJDnn38egLlz53LMMcewZMkSxowZw9lnn80NN9zATz/9xP7778/BBx/MTTfdxD333MOrr75KMBjkl7/85ea8JkyYwHPPPUePHj3o1KkTu+++e1qPkTGmdVKNEfz2VqKrPk4a5+19Eu7iQRnJIVtdf18DezSw/Npa31+YjVwyoVu3brjdbhYvXsyMGTMYNmwYy5YtY8aMGbRr144dd9yRq666imeeeYZOnTrxyiuvcNNNN3H//fdv3kZNTQ2XX345b7/9Nn379mX06NF19lFaWsobb7xBRUUFQ4cOZfTo0Vx33XXMmTOHqVOnAjB58mTmz5/P5MmTUVV+//vf88knn1BQUMArr7zClClTiEQijBw50gqVMSYpVSU8/xHCi15OGbui240M2H5YxnJpUaOn57IRI0YwY8YMpk+fzrnnnsvy5cs3F6pu3brx4YcfctxxxwHxy4NdunSp8/4ffviB3r1707dvXwB+85vfMGnSpM3rjzjiCPx+P36/n86dO7Nq1aotcpg8eTKTJ0/mgAMOAKCyspL58+dTUVHBMcccQ35+PgBHHXVUJg6BMaaVCC9+lVDpQynjAsMexFXYl1iGh1CyQpUmw4YNY/r06Xz33XcMHjyYnj17ct9991FUVMSBBx7I8uXLef/99xt9f6qmFr//504at9tNJBJpcBsXX3wxZ5xxRp3lDzzwgD1oa4xJKbLyI4Lf3pIyLm/PCbhLdom/CAXxrVsFsf7gcmckr1ZZqFLdU8qE4cOHc99999G3b1/cbjft27envLycuXPnctddd/Hggw9uviwYDoeZN28egwb9fD13hx12YNGiRSxcuJA+ffrw6quvptxnUVERGzdu3Pz60EMPZdy4cZx00kkUFhaybNkyvF4v++67L+eccw4XXXQRkUiEd999d4tiZoxpu6Lr/kfNzCtTxvl3vQZP5/0AcP04l/wbzgZgZyDaZyDVY+8BfyDt+bXKQtUcdt55Z9atW8dJ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(x=\"educ\", y = \"lhwage\", size=\"count\", legend=False, data=group_wage, sizes=(40, 400))\n",
    "plt.plot(wage[\"educ\"], model_2.predict(wage[\"educ\"]), c=\"C1\", label = \"Weighted\")\n",
    "plt.plot(wage[\"educ\"], model_3.predict(wage[\"educ\"]), c=\"C2\", label = \"Non Weighted\")\n",
    "plt.xlabel(\"Years of Education\")\n",
    "plt.ylabel(\"Log Hourly Wage\")\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The bottom line is that regression is this marvellous tool that works both with individual or aggregated data, but you have to use weights in this last case. To use weighted regression you need mean statistics. Not sum, not standard deviation, not medians, but means! For both the covariates and the dependent variable. With the exception of the bivariate case, the result of weighted regression with grouped data won't match exactly that of regression in ungrouped data, but it will be pretty similar. \n",
    "\n",
    "![img](./data/img/dummy/heterosk.png)\n",
    "\n",
    "I'll finish with a final example using additional covariates in a grouped data model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of observations: 10.0\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>    1.9747</td> <td>    0.427</td> <td>    4.629</td> <td> 0.002</td> <td>    0.966</td> <td>    2.983</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>educ</th>      <td>    0.0464</td> <td>    0.034</td> <td>    1.377</td> <td> 0.211</td> <td>   -0.033</td> <td>    0.126</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>IQ</th>        <td>    0.0041</td> <td>    0.008</td> <td>    0.486</td> <td> 0.642</td> <td>   -0.016</td> <td>    0.024</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "group_wage = (wage\n",
    "              .assign(count=1)\n",
    "              .groupby(\"educ\")\n",
    "              .agg({\"lhwage\":\"mean\", \"IQ\":\"mean\", \"count\":\"count\"})\n",
    "              .reset_index())\n",
    "\n",
    "model_4 = smf.ols('lhwage ~ educ + IQ', data=group_wage).fit()\n",
    "print(\"Number of observations:\", model_4.nobs)\n",
    "model_4.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this example, we've included IQ as a feature, besides the previously added years of education. The mechanics is pretty much the same: get the means and count, regress the mean and use the count as weights. \n",
    "\n",
    "## Regression for Dummies\n",
    "\n",
    "Dummy variables are categorical variables we've encoded as binary columns. For example, suppose you have a gender variable that you wish to include in your model. This variable is encoded into 3 categories: male, female and other genders. \n",
    "\n",
    "|gender|\n",
    "|------|\n",
    "|male  |\n",
    "|female|\n",
    "|female|\n",
    "|other |\n",
    "|male  |\n",
    "\n",
    "Since our model only accepts numerical values, we need to convert this category to a number. In linear regression, we use dummies for that. We encode each variable as a 0/1 column, denoting the presence of a category. We also leave one of the categories out as the base category. This is necessary since the last category is a linear combination of the others. Put it differently, we can know the last category if someone gives us information on the others. In our example, if someone is neither female nor other genders, we can infer that the person's category is male.\n",
    "\n",
    "|gender|female|other|\n",
    "|------|:-----|:----|\n",
    "|male  |0|0|\n",
    "|female|1|0|\n",
    "|female|1|0|\n",
    "|other |0|1|\n",
    "|male  |0|0|\n",
    "\n",
    "We've already dealt with a simple form of dummy regression when dealing with A/B testing. More generally, when we are dealing with a binary treatment, we represent it as a dummy variable. In this case, **the regression coefficient for that dummy is the increment for the intercept in the regression line**, or the difference in means between the treated and untreated.\n",
    "\n",
    "To make this more concrete, consider the problem of estimating the effect of graduating 12th grade on hourly wage (and let's ignore confounding just for now). In the code below, we've created a treatment dummy variable `T` indicating if years of education is greater than 12. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hwage</th>\n",
       "      <th>IQ</th>\n",
       "      <th>T</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19.225</td>\n",
       "      <td>93</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>16.160</td>\n",
       "      <td>119</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20.625</td>\n",
       "      <td>108</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>16.250</td>\n",
       "      <td>96</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>14.050</td>\n",
       "      <td>74</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    hwage   IQ  T\n",
       "0  19.225   93  0\n",
       "1  16.160  119  1\n",
       "2  20.625  108  1\n",
       "3  16.250   96  0\n",
       "4  14.050   74  0"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wage = (pd.read_csv(\"./data/wage.csv\")\n",
    "        .assign(hwage=lambda d: d[\"wage\"] / d[\"hours\"])\n",
    "        .assign(T=lambda d: (d[\"educ\"] > 12).astype(int)))\n",
    "\n",
    "wage[[\"hwage\", \"IQ\", \"T\"]].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The dummy works as a kind of switch. In our example, if the dummy is on, the predicted value is the intercept plus the dummy coefficient. If the dummy is off, the predicted value is just the intercept. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   19.9405</td> <td>    0.436</td> <td>   45.685</td> <td> 0.000</td> <td>   19.084</td> <td>   20.797</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>T</th>         <td>    4.9044</td> <td>    0.626</td> <td>    7.830</td> <td> 0.000</td> <td>    3.675</td> <td>    6.134</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "smf.ols('hwage ~ T', data=wage).fit().summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case, when the person hasn't completed 12th grade (dummy off), the average income is 19.9. Whe he or she has completed 12th grade (dummy on), the predicted value or the average income is 24.8449 (19.9405 + 4.9044). Hence, the dummy coefficient captures the difference in means, which is 4.9044 in our case.\n",
    "\n",
    "More formally, when the dependent variable is binary, as is often the case with treatment indicators, regression captures the ATE perfectly. That is because regression is a linear approximation to the conditional expectation function \\\\(E[Y|X]\\\\) and, in this particular case, the CEF IS linear. Namely, we can define \\\\(E[Y_i|T_i=0]=\\alpha\\\\) and \\\\(E[Y_i|T_i=1] = \\alpha + \\beta\\\\), which leads to the following CEF\n",
    "\n",
    "$\n",
    "E[Y_i|T_i] =  E[Y_i|T_i=0] + \\beta T_i = \\alpha + \\beta T_i\n",
    "$\n",
    "\n",
    "and \\\\(\\beta\\\\) is the difference in means or the ATE in the case of random data\n",
    "\n",
    "$\n",
    "\\beta = [Y_i|T_i=1] - [Y_i|T_i=0]\n",
    "$\n",
    "\n",
    "If we use additional variables, the dummy coefficient becomes the **conditional** difference in means. For instance, let's say we add IQ to the previous model. Now, the dummy coefficient tells us how much increase we should expect from graduating 12th grade **while holding IQ fixed**. If we plot the prediction, we will see two parallel lines. The jump from one line to the next says the amount we should expect for completing 12th grade. They also say that the effect is constant. No matter your IQ, everyone benefits the same from graduating 12th grade. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "m = smf.ols('hwage ~ T+IQ', data=wage).fit()\n",
    "plt_df = wage.assign(y_hat = m.fittedvalues)\n",
    "\n",
    "plt.plot(plt_df.query(\"T==1\")[\"IQ\"], plt_df.query(\"T==1\")[\"y_hat\"], c=\"C1\", label=\"T=1\")\n",
    "plt.plot(plt_df.query(\"T==0\")[\"IQ\"], plt_df.query(\"T==0\")[\"y_hat\"], c=\"C2\", label=\"T=0\")\n",
    "plt.title(f\"E[T=1|IQ] - E[T=0|IQ] = {round(m.params['T'], 2)}\")\n",
    "plt.ylabel(\"Wage\")\n",
    "plt.xlabel(\"IQ\")\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we put this model into an equation, we can see why:\n",
    "\n",
    "$\n",
    "wage_i = \\beta_0 + \\beta_1T_i + \\beta_2 IQ_i + e_i\n",
    "$\n",
    "\n",
    "Here, \\\\(\\beta_1\\\\) is the conditional difference in means and it is a constant value, 3.16 in our case. We can make this model more flexible by adding an interaction term.\n",
    "\n",
    "$\n",
    "wage_i = \\beta_0 + \\beta_1T_i + \\beta_2 IQ_i + \\beta_3 IQ_i * T_i  + e_i\n",
    "$\n",
    "\n",
    "Things are getting a little bit mode complex, so let's see what each parameter means in this model. First, the intercept \\\\(\\beta_0\\\\). This bad boy doesn't have a particularly interesting interpretation. It's the expected wage when the treatment is zero (the person hasn't graduated from 12th grade) AND the IQ is zero. Since we don't expect IQ to be zero for anyone (actually… nevermind), this parameter is not very meaningful. Now, when we turn to \\\\(\\beta_1\\\\), we have a similar situation. This parameter is how much increase in wage should we expect from completing 12th grade **when IQ is zero**. Once again, since IQ is never zero, it doesn't have a particularly interesting meaning. Now, \\\\(\\beta_2\\\\) is a bit more interesting. It tells us how much IQ increases wages **for the non-treated**. So, in our case, it is something like 0.11. This means that for each 1 extra IQ point, the person that has not completed 12th grade should expect to gain an extra 11 cents per hour. Finally, the most interesting parameter is \\\\(\\beta_3\\\\). It tells us how much IQ increases the effect of graduating 12th grade. In our case, this parameter is 0.024, which means that for each extra IQ point, graduating 12th grade gives 2 extra cents. This might not seem much, but compare someone with 60IQ and with 140IQ. The first one will get an increase of 1.44 in wage (60 * 0.024), while the person with 140 IQ will gain an extra 3.36 dollars (60 * 0.024) when graduating from 12th grade.\n",
    "\n",
    "In simple modeling jarong, this interaction term allows the treatment effect to change by levels of the features (only IQ, in this example). The result is that if we plot the prediction lines, we will see that they are no longer parallel and that those that graduate 12th grade (T=1) have a higher slope on IQ, higher IQ benefit more from graduating than lower IQ. This is sometimes referenced as effect modification or heterogeneous treatment effect. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "m = smf.ols('hwage ~ T*IQ', data=wage).fit()\n",
    "plt_df = wage.assign(y_hat = m.fittedvalues)\n",
    "\n",
    "plt.plot(plt_df.query(\"T==1\")[\"IQ\"], plt_df.query(\"T==1\")[\"y_hat\"], c=\"C1\", label=\"T=1\")\n",
    "plt.plot(plt_df.query(\"T==0\")[\"IQ\"], plt_df.query(\"T==0\")[\"y_hat\"], c=\"C2\", label=\"T=0\")\n",
    "plt.title(f\"E[T=1|IQ] - E[T=0|IQ] = {round(m.params['T'], 2)}\")\n",
    "plt.ylabel(\"Wage\")\n",
    "plt.xlabel(\"IQ\")\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, let's look at the case where all the variables in our model are dummies. To do so, we will discretize IQ into 4 bins and treat years of education as a category."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hwage</th>\n",
       "      <th>educ</th>\n",
       "      <th>IQ_bins</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19.225</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>16.160</td>\n",
       "      <td>18</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20.625</td>\n",
       "      <td>14</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>16.250</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>14.050</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    hwage  educ IQ_bins\n",
       "0  19.225    12       1\n",
       "1  16.160    18       3\n",
       "2  20.625    14       2\n",
       "3  16.250    12       1\n",
       "4  14.050    11       0"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wage_ed_bins = (wage\n",
    "                .assign(IQ_bins = lambda d: pd.qcut(d[\"IQ\"], q=4, labels=range(4)))\n",
    "                [[\"hwage\", \"educ\", \"IQ_bins\"]])\n",
    "\n",
    "wage_ed_bins.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Treating education as a category, we no longer restrict the effect of education to a single parameter. Instead, we allow each year of education to have its own distinct impact. By doing so, we gain flexibility, since the effect of education is no longer parametric. This model simply computes the mean wage for each year of education."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "        <td></td>           <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th>     <td>   18.5600</td> <td>    3.011</td> <td>    6.164</td> <td> 0.000</td> <td>   12.651</td> <td>   24.469</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.10]</th> <td>   -0.7874</td> <td>    3.414</td> <td>   -0.231</td> <td> 0.818</td> <td>   -7.488</td> <td>    5.913</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.11]</th> <td>    0.1084</td> <td>    3.343</td> <td>    0.032</td> <td> 0.974</td> <td>   -6.452</td> <td>    6.669</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.12]</th> <td>    1.7479</td> <td>    3.049</td> <td>    0.573</td> <td> 0.567</td> <td>   -4.236</td> <td>    7.732</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.13]</th> <td>    4.3290</td> <td>    3.183</td> <td>    1.360</td> <td> 0.174</td> <td>   -1.918</td> <td>   10.576</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.14]</th> <td>    4.0888</td> <td>    3.200</td> <td>    1.278</td> <td> 0.202</td> <td>   -2.192</td> <td>   10.370</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.15]</th> <td>    6.3013</td> <td>    3.329</td> <td>    1.893</td> <td> 0.059</td> <td>   -0.231</td> <td>   12.834</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.16]</th> <td>    7.2225</td> <td>    3.110</td> <td>    2.323</td> <td> 0.020</td> <td>    1.120</td> <td>   13.325</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.17]</th> <td>    9.5905</td> <td>    3.366</td> <td>    2.849</td> <td> 0.004</td> <td>    2.984</td> <td>   16.197</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.18]</th> <td>    7.3681</td> <td>    3.264</td> <td>    2.257</td> <td> 0.024</td> <td>    0.962</td> <td>   13.775</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_dummy = smf.ols('hwage ~ C(educ)', data=wage).fit()\n",
    "model_dummy.summary().tables[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(wage[\"educ\"], wage[\"hwage\"])\n",
    "plt.plot(wage[\"educ\"].sort_values(), model_dummy.predict(wage[\"educ\"].sort_values()), c=\"C1\")\n",
    "plt.xlabel(\"Years of Education\")\n",
    "plt.ylabel(\"Hourly Wage\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First of all, notice how this removes any assumption about the functional form of how education affects wages. We don't need to worry about logs anymore. In essence, this model is completely non-parametric. All it does is compute sample averages of wage for each year of education. This can be seen in the plot above, where the fitted line doesn't have a particular form. Instead, is the interpolation of the sample means for each year of education. We can also see that by reconstructing one parameter, for instance, that of 17 years of education. For this model, it's `9.5905`. Below, we can see how it is just the difference between the baseline years of education (9) and the individuals with 17 years\n",
    "\n",
    "$\n",
    "\\beta_{17} = E[Y|T=17]-E[Y|T=9]\n",
    "$\n",
    "\n",
    "The trade-off is that we lose statistical significance when we allow such flexibility. Notice how big the p-values are for some years."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "E[Y|T=9]: 18.56\n",
      "E[Y|T=17]-E[Y|T=9]: 9.590472362353516\n"
     ]
    }
   ],
   "source": [
    "t1 = wage.query(\"educ==17\")[\"hwage\"]\n",
    "t0 = wage.query(\"educ==9\")[\"hwage\"]\n",
    "print(\"E[Y|T=9]:\", t0.mean())\n",
    "print(\"E[Y|T=17]-E[Y|T=9]:\", t1.mean() - t0.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we include more dummy covariates in the model, the parameters on education become a weighted average of the effect on each dummy group:\n",
    "\n",
    "$\n",
    "E\\{ \\ (E[Y_i|T=1, Group_i] - E[Y_i|T=0, Group_i])w(Group_i) \\ \\}\n",
    "$\n",
    "\n",
    "\\\\(w(Group_i)\\\\) is not exactly, but is proportional to the variance of the treatment in the group \\\\(Var(T_i|Group_i)\\\\). One natural question that arises from this is why not use the full nonparametric estimator, where the group weight is the sample size? This indeed is a valid estimator, but it is not what regression does. By using the treatment variance, regression is placing more weight on groups where the treatment varies a lot. This makes intuitive sense. If the treatment was almost constant (say 1 treated and everyone else untreated), it doesn't matter its sample size. It wouldn't provide much information about the treatment effect."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "         <td></td>            <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th>       <td>   18.4178</td> <td>    2.991</td> <td>    6.158</td> <td> 0.000</td> <td>   12.548</td> <td>   24.288</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.10]</th>   <td>   -1.2149</td> <td>    3.392</td> <td>   -0.358</td> <td> 0.720</td> <td>   -7.872</td> <td>    5.442</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.11]</th>   <td>   -0.4687</td> <td>    3.332</td> <td>   -0.141</td> <td> 0.888</td> <td>   -7.008</td> <td>    6.070</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.12]</th>   <td>    0.3400</td> <td>    3.059</td> <td>    0.111</td> <td> 0.912</td> <td>   -5.664</td> <td>    6.344</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.13]</th>   <td>    2.4103</td> <td>    3.206</td> <td>    0.752</td> <td> 0.452</td> <td>   -3.882</td> <td>    8.702</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.14]</th>   <td>    1.8040</td> <td>    3.238</td> <td>    0.557</td> <td> 0.578</td> <td>   -4.551</td> <td>    8.159</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.15]</th>   <td>    3.8599</td> <td>    3.369</td> <td>    1.146</td> <td> 0.252</td> <td>   -2.752</td> <td>   10.472</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.16]</th>   <td>    4.4060</td> <td>    3.171</td> <td>    1.390</td> <td> 0.165</td> <td>   -1.817</td> <td>   10.629</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.17]</th>   <td>    6.7470</td> <td>    3.422</td> <td>    1.971</td> <td> 0.049</td> <td>    0.030</td> <td>   13.464</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(educ)[T.18]</th>   <td>    4.3463</td> <td>    3.332</td> <td>    1.304</td> <td> 0.192</td> <td>   -2.194</td> <td>   10.886</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(IQ_bins)[T.1]</th> <td>    1.4216</td> <td>    0.898</td> <td>    1.584</td> <td> 0.114</td> <td>   -0.340</td> <td>    3.183</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(IQ_bins)[T.2]</th> <td>    2.9717</td> <td>    0.930</td> <td>    3.195</td> <td> 0.001</td> <td>    1.146</td> <td>    4.797</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>C(IQ_bins)[T.3]</th> <td>    3.7879</td> <td>    1.022</td> <td>    3.708</td> <td> 0.000</td> <td>    1.783</td> <td>    5.793</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_dummy_2 = smf.ols('hwage ~ C(educ) + C(IQ_bins)', data=wage).fit()\n",
    "model_dummy_2.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![img](./data/img/dummy/you_little_shit.png)\n",
    "\n",
    "## Key Ideas\n",
    "\n",
    "We started this section by looking at how some data points are more important than others. Namely, those with higher sample size and lower variance should be given more weight when estimating a linear model. Then, we looked at how linear regression can even handle grouped anonymised data with elegance, provided we use sample weights in our model.\n",
    "\n",
    "Next, we moved to dummy regression. We saw how it can be made a non parametric model that places no assumptions whatsoever on the functional form of how the treatment impacts the outcome. We then explored the intuition behind dummy regression\n",
    "\n",
    "## References\n",
    "\n",
    "I like to think of this entire book as a tribute to Joshua Angrist, Alberto Abadie and Christopher Walters for their amazing Econometrics class. Most of the ideas here are taken from their classes at the American Economic Association. Watching them is what is keeping me sane during this tough year of 2020.\n",
    "* [Cross-Section Econometrics](https://www.aeaweb.org/conference/cont-ed/2017-webcasts)\n",
    "* [Mastering Mostly Harmless Econometrics](https://www.aeaweb.org/conference/cont-ed/2020-webcasts)\n",
    "\n",
    "I'll also like to reference the amazing books from Angrist. They have shown me that Econometrics, or 'Metrics as they call it, is not only extremely useful but also profoundly fun.\n",
    "\n",
    "* [Mostly Harmless Econometrics](https://www.mostlyharmlesseconometrics.com/)\n",
    "* [Mastering 'Metrics](https://www.masteringmetrics.com/)\n",
    "\n",
    "My final reference is Miguel Hernan and Jamie Robins' book. It has been my trustworthy companion in the most thorny causal questions I had to answer.\n",
    "\n",
    "* [Causal Inference Book](https://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/)\n",
    "\n",
    "\n",
    "![img](./data/img/poetry.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
